class Solution152 {
    public int maxProduct(int[] nums) {
        int n = nums.length ; 
        // 负数
        int[] f = new int[n];
        f[0] = nums[0] ; 
        // 正数
        int[] g = new int[n] ; 
        g[0] = nums[0] ; 
        int max = nums[0] ; 
        for(int i=1 ; i< n ; i ++){
           f[i] = Math.min(nums[i] , f[i-1] * nums[i]) ; 
           g[i] = Math.max(nums[i] , g[i-1] * nums[i]) ; 
            g[i] = Math.max(g[i] , f[i-1] * nums[i]) ; 
            f[i] = Math.min(f[i] , g[i-1] * nums[i]) ; 
           max = Math.max(g[i] , max) ; 
        }
        return max ; 
    }
}